[DMS] MongoDB Sourceのマイグレーションモードを比較する
菊池です。
先日のブログで紹介しました通り、Database Migration Service(DMS)の移行元データベース(Source)としてMongoDBが設定可能になりました。
- AWS Database Migration Service Adds Support for MongoDB and Amazon DynamoDB
- Using MongoDB as a Source for AWS Database Migration Service
- Database Migration Service の Source に MongoDB が選択可能になりました!
今回は、DMSでMongoDBからマイグレーションする際の、2つのマイグレーションモードについて調べてみました。
マイグレーションモード
MongoDBからのマイグレーションには、以下の2つのモードがあります。
- テーブルモード:JSONドキュメントの各キーを列にマッピングして出力
- ドキュメントモード:JSONドキュメントをそのまま出力
言葉だけだとわかりにくいですが、図にすると以下のようなイメージです。
MongoDBはドキュメント指向のデータベースですが、データモデルの異なるデータストアに出力するにあたって、ターゲットのデータモデルや用途によって2つのモードから選択が可能です。
RDBにマイグレーションして、各キーの項目を使ったクエリ実行したい場合には、テーブルモードが便利かと思います。DynamoDBのようなキー・バリューストアにレプリケーションする場合にはドキュメントモードが適していそうです。
CDCを使う上での制約
DMSの大きなウリであるCDC(Change Data Capture)も、MongoDBのOplogを利用することで可能です。ただし、各モードによりCDCでレプリケーション可能なオペレーションが異なります。
テーブルモード | ドキュメントモード | |
CDCの利用 | 可能 | 可能(_id列を有効にする必要あり) |
コレクションの追加 | × | ○ |
コレクション名の変更 | × | × |
ドキュメントへのキーの追加 | × | ○ |
CDCの利用自体はどちらのモードでも可能ですが、ドキュメントモードでは"_id"列をオプションで別のカラムに出力しておく必要があります(プライマリキーとして利用されます)。コレクションを追加するのはドキュメントモードでのみサポートされます。コレクション名の変更はどちらのモードでもサポートされません。ドキュメントへ新規のキーを追加することは、そのまま1つのカラムに出力されるドキュメントモードでのみサポートされます。テーブルモードでは列の追加が必要なためか、サポートされず、定義済みのキーのみ反映されます。
さいごに
異なるデータストア間でのレプリケーションを可能にするDMSですが、データモデルの異なるDBでレプリケーションする場合には、さすがにそのまま移行とはいかないようです。
双方のデータモデルの特性を理解し、ユースケースにあった適切な移行方法を選択するのが重要でしょう。